package com.project.poetry.service.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.project.poetry.service.entity.dto.poetry.PoetryAuthorDTO;
import com.project.poetry.service.entity.dto.poetry.PoetryDTO;
import com.project.poetry.service.entity.dto.poetry.PoetryListDTO;
import com.project.poetry.service.entity.dto.poetry.PoetryListOutDTO;
import com.project.poetry.service.entity.po.poetry.PoetryPO;

import java.util.List;

/**
 * 作品业务层接口
 * @author mengxj
 */
public interface PoetryService extends IService<PoetryPO> {

    /**
     * 获取作品详情
     * @param poetryId 作品id
     * @return 作品详情
     */
    PoetryDTO getPoetryDetail(Long poetryId);

    /**
     * 保存作品
     * @param poetry 作品信息
     */
    void savePoetry(PoetryDTO poetry);

    /**
     * 分页查询作品列表
     * @param poetryList 查询条件
     * @return 作品列表
     */
    IPage<PoetryListOutDTO> poetryList(PoetryListDTO poetryList);

    /**
     * 查询有作品的作者
     * @return 有作品的作者
     */
    List<PoetryAuthorDTO> poetryAuthor();

    /**
     * 导出文件时用来查询数据
     * @param poetryList 查询条件
     * @return 文件需要的数据
     */
    List<PoetryListOutDTO> poetryListFile(PoetryListDTO poetryList);

    /**
     * 通过作者查询对应的作品集合
     * @param authorId 作者id
     * @return 作品
     */
    List<PoetryPO> selectPoetryByAuthorId(Long authorId);

    List<String> getContentListByKeyWord(String keyWord);
}
